checkout: Plug a memleak of the state stringbuf
authorColin Walters <walters@verbum.org>
Thu, 11 May 2017 13:08:20 +0000 (09:08 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Thu, 11 May 2017 15:34:51 +0000 (15:34 +0000)
A struct without a cleanup macro is a struct likely to leak.

Closes: #850
Approved by: jlebon

src/libostree/ostree-repo-checkout.c

index b4298ba4dbb2a893de9c2a2006a8658370608090..f5ef9517b17ffb023ccfe2bd76f742be61df8c4e 100644 (file)
@@ -40,6 +40,14 @@ typedef struct {
   GString *selabel_path_buf;
 } CheckoutState;
 
+static void
+checkout_state_clear (CheckoutState *state)
+{
+  if (state->selabel_path_buf)
+    g_string_free (state->selabel_path_buf, TRUE);
+}
+G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(CheckoutState, checkout_state_clear);
+
 static gboolean
 checkout_object_for_uncompressed_cache (OstreeRepo      *self,
                                         const char      *loose_path,
@@ -787,7 +795,7 @@ checkout_tree_at (OstreeRepo                        *self,
                   GCancellable                      *cancellable,
                   GError                           **error)
 {
-  CheckoutState state = { 0, };
+  g_auto(CheckoutState) state = { 0, };
   // If SELinux labeling is enabled, we need to keep track of the full path string
   if (options->sepolicy)
     {